/*!
 * \mainpage
 *
 * \section so_5_extra_versions so_5_extra Version Info
 *
 * \subsection so_5_extra_v1_5_2 v.1.5.2
 *
 * New type of mbox is introduced: so_5::extra::mboxes::inflight_limit.
 *
 * New type of mbox is introduced: so_5::extra::mboxes::composite.
 *
 * New type of mbox is introduced: so_5::extra::mboxes::first_last_subscriber_notification.
 *
 * \subsection so_5_extra_v1_5_1 v.1.5.1
 *
 * Switch to SObjectizer-5.7.4.
 *
 * so_5::extra::mboxes::unique_subscribers now support delivery filters.
 *
 * Note: so_5::extra::mboxes::round_robin doesn't support delivery filters
 * because it seems that such support has no sense for that type of mbox.
 *
 * \subsection so_5_extra_v1_5_0 v.1.5.0
 *
 * Traits-type for asio_one_thread and asio_thread_pool dispatchers is empty
 * now. This is a breaking change for those who use asio_one_thread and/or
 * asio_thread_pool dispatchers with custom thread type. Since v.1.5.0 so5extra
 * utilizes the standard SObjectizer's mechanism based on
 * abstract_work_thread_t/abstract_work_thread_factory_t interfaces. It means
 * that a user has to create an instance of a custom thread factory, then pass
 * this factory to the parameters of a dispatcher (or to the parameters of the
 * whole SObjectizer Environment).
 *
 * New type of mbox is introduced: so_5::extra::mboxes::unique_subscribers.
 *
 * \subsection so_5_extra_v1_4_2 v.1.4.2
 *
 * No new features, just adaptation to SObjectizer-5.7.3. Some new features
 * from SO-5.7.3 are used to avoid warnings about deprecations.
 *
 * \b Attention. so_5_extra-1.4.2 can't be used with previous version of
 * SObjectizer.
 *
 * Updates for dependencies: Asio-1-21-0 and doctest-2.4.7.
 *
 * \subsection so_5_extra_v1_4_1 v.1.4.1
 *
 * New submodule so_5::extra::disp::asio_one_thread added with another
 * Asio-base dispatcher that uses only one worker thread.
 *
 * \subsection so_5_extra_v1_4_0 v.1.4.0
 *
 * License for so5extra library changed. Since v.1.4.0 so5extra is distributed
 * under BSD-3-CLAUSE license.
 *
 * Switch to SObjectizer-5.7.0. Please note that so5extra-1.4.0 won't work
 * with previous versions of SObjectizer.
 *
 * New submodule so_5::extra::mchains::fixed_size added with several
 * so_5::extra::mchains::fixed_size::create_mchain() functions.
 *
 * \subsection so_5_extra_v1_3_1 v.1.3.1
 *
 * New class so_5::extra::mboxes::broadcast::fixed_mbox_template_t added.
 *
 * \subsection so_5_extra_v1_3_0 v.1.3.0
 *
 * \attention This version is not compatible with v.1.2.
 * This version requires SObjectizer-5.6.0 or higher.
 *
 * New submodule so_5::extra::sync added.
 *
 * \subsection so_5_extra_v1_2_2 v.1.2.2
 *
 * New example `disp/asio_thread_pool/hello_world` added.
 *
 * \subsection so_5_extra_v1_2_1 v.1.2.1
 *
 * Now so_5_extra can be used via CMake. There is a CMakeFiles.txt file
 * in dev/so_5_extra subdirectory. To use so_5_extra write something
 * like that in your project's CMakeFiles.txt:
\verbatim
find_package(so5extra CONFIG REQUIRED)
target_link_libraries(your_target PRIVATE sobjectizer::so5extra)
\endverbatim
 *
 * \subsection so_5_extra_v1_2_0 v.1.2.0
 *
 * Since v.1.2.0 so_5_extra requires SObjectizer v.5.5.23.
 * Older versions of SObjectizer 5.5 are not supported because
 * of use of new SObjectizer API introduced in v.5.5.23.
 *
 * Class so_5::extra::mboxes::proxy::simple_t is added.
 * This class simplifies development of custom mboxes in cases
 * when main mbox's work can be delegated to some existing
 * mbox.
 *
 * Namespace so_5::extra::revocable_msg added.
 * This namespace contains several send() functions for sending
 * revocable messages.
 *
 * Namespace so_5::extra::revocable_timer added.
 * This namespace contains various send_delayed() and
 * send_periodic() functions for working with revocable timer
 * messages.
 *
 * Namespace so_5::extra::enveloped_msg added.
 * This namespace contains various stuff for working with
 * enveloped messages introduced in SObjectizer v.5.5.23.
 * For example there is so_5::extra::enveloped_msg::time_limited_delivery_t
 * envelope for delivery message/signal with a deadline.
 *
 * \subsection so_5_extra_v1_1_0 v.1.1.0
 *
 * Since v.1.1.0 so_5_extra requires SObjectizer v.5.5.22.
 * Older versions of SObjectizer 5.5 are not supported because
 * of changes in SObjectizer v.5.5.22.
 *
 * \subsection so_5_extra_v1_0_4 v.1.0.4
 *
 * Implementation of "async operation" added in form of
 * so_5::extra::async_op::time_unlimited::make() and
 * so_5::extra::async_op::time_limited::make() functions and
 * related classes.
 *
 * Since v.1.0.4 so_5_extra requires SO-5.5.21 as minimal SObjectizer's
 * version.
 *
 * \subsection so_5_extra_v1_0_3 v.1.0.3
 *
 * Implementation of retained_msg mbox is added.
 * Retained message mbox related stuff live in
 * so_5::extra::mboxes::retained_msg namespace.
 *
 * \subsection so_5_extra_v1_0_2 v.1.0.2
 *
 * Implementation of single-thread and thread-safe environment infrastructure
 * on top of Asio. A new namespace
 * so_5::extra::env_infrastructures::asio::simple_mtsafe is added.
 * New example resolve_interactive is added.
 *
 * \subsection so_5_extra_v1_0_1 v.1.0.1
 *
 * Implementation of collecting mbox is added.
 * Collecting mbox related stuff live in
 * so_5::extra::mboxes::collecting_mbox namespace.
 * See the main template class so_5::extra::mboxes::collecting_mbox::mbox_template_t for more details.
 *
 * Since v.1.0.1 so_5_extra required SO-5.5.19.3 as minimal SObjectizer's
 * version.
 */

// vim:ft=cpp

